/**
 * 此工具js用来存放传参返参通用的过滤方法
 */

/**
   * 传参对象空值过滤
   */
export function paramNoNull(Obj) {
  return Object.fromEntries(
    Object.entries(Obj)
      .filter(([key, value]) => value !== null && value !== undefined && value !== '' && value !== ' ' && value !== '--')
  )
}

/**
   * 数据中有字段为空的处理, 字段为空都改为'--'
   */
export const formatData = initialData => {
  const isEmpty = val => {
    // null、字符串为空（注意存在数值为0时），带空格字符串，后台处理成的'-'
    if (!String(val) || String(val) === 'null' || !String(val).replace(/\s+/g, '') || val === '-') {
      return '--'
    }
    return val
  }

  if (initialData instanceof Array) {
    // 当数据为数组时
    initialData.forEach((val, key, array) => {
      array[key] = formatData(val)
    })
  } else if (initialData instanceof Object) {
    // 当数据为对象时
    for (const pro in initialData) {
      initialData[pro] = formatData(initialData[pro])
    }
  } else {
    // 当数据为基础类型时
    initialData = isEmpty(initialData)
  }
  return initialData
}

/**
   * 性别转义
   * @param gender
   * @returns {string}
   */
export function genderDict(gender) {
  return gender === true ? '女' : '男'
}

/**
   * 驼峰转下划线
   * @param str
   * @returns {string}
   */
export function humpToUnderline(str) {
  return str.replace(/([A-Z])/g, '_$1').toLowerCase()
}
/**
   * 下划线转驼峰
   * @param str
   * @returns {string}
   */
export function underlineToHump(str) {
  for (const match of str.match(/_(.)/g)) {
    str = str.replace(match, match.replace('_', '').toUpperCase())
  }
  return str
}
/**
 * 菜单类型转义
 * @param type
 * @returns {string}
 */
export function menuTypeDict(type) {
  switch (type) {
    case '0':return '目录'
    case '1':return '菜单'
    case '2':return '按钮'
  }
}
